1. The Field of the Invention
The invention relates to automatic generation of software interfaces and user documentation for multi-platform software systems generally. Specifically, the invention relates to generating code interfaces and user documentation for command-line systems targeted to multiple platforms from a common definition.
2. The Relevant Art
Computer networking has increased the interaction and need for interoperability between disparate computing devices and systems. Network-oriented applications are typically required to run on the various platforms that comprise computer networks. Often, the operating systems and processing systems that host and run network-oriented applications have human and programming interfaces with differing philosophies, performance criteria, and objectives.
Creating network-oriented applications such as storage management is a challenge in that users and system administrators expect products to operate consistently regardless of the delivery platform, while also maintaining the expectations and strengths of the platforms to which they are familiar. The challenge of delivering well documented applications that function consistently on multiple platforms while facilitating platform-specific expectations is exacerbated by the number of personnel involved in creating and delivering software products.
FIG. 1 is a simplified depiction of a traditional software development process 100. One or more product architects 110, such as marketing and development managers, develop a product specification 112. From the product specification, more detailed specifications are created for specific software functions particularly those involving human interaction. The detailed specifications and/or the product specifications are typically communicated to multiple individuals and/or teams in the form of design documents.
As shown in FIG. 1, each software developer 120, on each platform, interprets the specification 112 and implements the various software functions as software code 122, subject to platform and project timeline constraints. After the software is coded, the information developers 130 on each platform document the performance of the software in the form of on-line help 132 and printed documents 134. The code, documentation, and other deliverables are combined into the initial versions of a product 140. The initial versions of the product 140 are tested by quality assurance personnel 150 to reveal coding errors and ambiguities, which are addressed by the software developers 120 and information developers 130 as expeditiously as possible.
In some cases, the product specification 112 must be modified, resulting in adjustments to the product on multiple platforms. Changes and adaptation are difficult in that many parties are involved, and product deadlines restrict the number of changes that can occur. As implied by FIG. 1, the sequentially dependent nature of the traditional design, build, test, and documentation processes result in relatively long development and release cycles for the product 140.
In addition to normal pressures of developing, testing, and releasing products in a timely fashion, there are several challenges and difficulties in creating documentation that is accurate and consistent. Software documentation is most useful when the documented functionality is consistent with the actual functionality of the product. Typically, the product specification and design documents, if any, are technically oriented and targeted toward the engineers and technicians who develop and test the product.
In contrast, the information developers 130 are required to create documentation that is understandable by a less technical user yet precise enough to be useful to highly technical users. Often the gap between the technical specification and the actual users experience requires information developers to collect information by a variety of means such as testing the product, communicating with the developers, referencing the platform specific source code, and conjecturing on the intent of the designers.
Documentation is often considered secondary in importance, despite the role of documentation in creating a successful user experience. This is particularly so among novice users. Information development is often put off or neglected under the pressure of product release deadlines.
The challenges of documenting software functionality are further exacerbated in multi-platform software products in that the authoring tools, human interface designs, programming interfaces, and the actual functionality of the product being documented differ from platform to platform. Typically, several information developers are required to document the various versions of software in the formats appropriate for each platform.
Obviously, the aforementioned design processes and methodologies are fraught with error, as well as replicated effort, resulting in poorly documented products that function differently on various platforms. What is needed is an apparatus and method to generate software interfaces and documentation that is automated and controllable from a central source. The method must be flexible enough to support expected platform differences while constrained enough to prevent unnecessary documentation and functionality differences. Such a method would preferably facilitate parallel development and reveal inconsistent interpretations of functional specifications relatively easily.